#ifndef SHARED_DATA_H
#define SHARED_DATA_H

#include KRTS_HEAD

// 测试时间单位
constexpr int us_ = 10;
constexpr int ms_ = us_ * 1000;
constexpr int s_ = ms_ * 1000;

struct MeasureValue
{
	int64 current_time {};		// 当前测试的时间点
	int64 current_value {};		// 当前抖动值
	int64 min_value {10};		// 测试过程中抖动最小值
	int64 max_value {};			// 测试过程中抖动最大值
	int64 lat_min {};			// 最近一秒钟抖动最小值
	int64 lat_max {};			// 最近一秒钟抖动最大值
	int64 lat_avg {};			// 最近一秒钟抖动平均值
};

struct SharedData
{
	KSHandle kernel_handle {NULL};                        // Kernel 的句柄
	KSHandle finished_event_handle {NULL};                // 事件句柄以发出测量结束的信号
	KSHandle timer_handle {NULL};                         // 计时器的句柄
	KSHandle timer_call_back_handle {NULL};               // 定时器回调的句柄
	int pre_measure_count {};                             // 未测量的（第一个）计时器时钟周期数
	int items {0};                                        // 测量总数
	int index {0};                                        // 当前测量序号
	int classes[10] {};								   // 抖动统计
	int finish_flag {0};								   // 完成标志
	MeasureValue measure_value {};						   // 测量值
};

#endif  // SHARED_DATA_H
